package attend.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import util.DBConnection;
import exception.BaseException;

/**
 * <pre>
 * 근태관리 공통 쿼리
 * </pre>
 * @author Yang ChangHwan
 * @since 2009-01-09
 */
public class CommonAttendDAO {
	
	private StringBuffer 						sb 		= 	new StringBuffer();
	private List<HashMap<String, String>> 		list 	= 	null;
	
	public List<HashMap<String, String>> getList() {
		return list;
	}

	public void setList(List<HashMap<String, String>> list) {
		this.list = list;
	}

	private Connection 							conn 	= 	null;
	private PreparedStatement 					pstmt 	= 	null;
	private ResultSet 							rs 		= 	null;
	
	/**
	 * 
	 */
	public CommonAttendDAO() throws BaseException {
		conn = 	DBConnection.Connection(DBConnection.ATTEND);	//근태관리 Connection
	}
	
	/**
	 * <pre>
	 * 사업그룹 목록
	 * 사업자 그룹이 Y인 경우에만 부서를 추가할수 있게 함.
	 * </pre>
	 * @throws BaseException
	 * @throws SQLException
	 */
	public void retrieveGroupByUseY() throws BaseException, SQLException {
		try {
					
			sb.setLength(0);
			sb.append("     SELECT	                         \r\n");
			sb.append("     		UPPER_DEPT_NO , DEPT_NM  \r\n");
			sb.append("     FROM	                         \r\n");
			sb.append("     		TB_DEPT                  \r\n");
			sb.append("     WHERE	                         \r\n");
			sb.append("     		UPPER_DEPT_NO = DEPT_NO  \r\n");
			sb.append("     	AND                          \r\n");
			sb.append("     		USE_YN		  = 'Y'      \r\n");

			System.out.println("사업그룹 목록이 사용인 것만 조회함. : \r\n" + sb.toString());	//쿼리 출력 debug
			
			pstmt 					= 	conn.prepareStatement(sb.toString().trim());

			rs 						= 	pstmt.executeQuery();

			//쿼리된 내용을 모두 담을 객체.
			list = new ArrayList<HashMap<String, String>>();
			
			while (rs.next()) {
				//각 행의 각각컬럼의 데이터를 담는다.
				HashMap<String , String>  hash_map = new HashMap<String, String>();
				
				//hash_map.put("대소문자로 구분하여 사용할 것." , "디비에서는 상관없음.");
				//jsp에서 <s:property value='upper_dept_no'/> 와 같아야 함.
				hash_map.put("upper_dept_no" 	, rs.getString("UPPER_DEPT_NO") );	//사업그룹코드
				hash_map.put("dept_nm"			, rs.getString("DEPT_NM") );		//사업그룹명
			
				list.add(hash_map);	// 한행의 데이터인 맵객체를 담는다.
			}
			
		}catch (SQLException se){
			se.printStackTrace();
			BaseException dex = new BaseException();                
			dex.setException(se);
			dex.setAppReturnCode("10");
			throw dex;
		} catch(Exception e){
			e.printStackTrace();
			BaseException dex = new BaseException();                
			dex.setException(e);
			dex.setAppReturnCode("20");
			throw dex;
		} finally{
			try{
				if (pstmt != null) pstmt.close();
				if (rs != null) rs.close();
				if(conn != null) conn.close();
			} catch(SQLException fse){
				BaseException dex = new BaseException();                
				dex.setException(fse);
				dex.setAppReturnCode("10");
				throw dex;
			} 
		}
	}	//retrieveUpperDept END.

}
